package com.study.kt._02feature

fun main() {
    //i每次都会重新赋值，所以打印结果相同
    test()
    test()

    //close是一个闭包函数
    val close = close()
    //调用闭包
    close() //10
    close() //11
}

fun test() {
    var i = 10
    println(i)
    i++
}

//闭包 ,close函数返回了一个新的函数没有参数没有返回值 Unit表示没有返回值
//返回的函数 依赖外部函数 形成一个闭包
/**
 * 1.Java中的函数没状态
 * 2.闭包让kotlin中的函数有了状态 Java->class first,Kotlin->class、fun first
 * 3.kotlin中的闭包一般是指 lambda表达式
 */
fun close(): () -> Unit {
    var i = 10
    return {
        println(i++)
    }
}